package linkedtable;

/**
 * @Description 剑指 Offer 22. 链表中倒数第k个节点
 * @Author Firenut
 * @Date 2023-02-03 23:21
 */
public class T22_getKthFromEnd {
    // 法1: 先遍历链表求出链表的长度 len; 从而得出要移动的距离len-k+1
    // 法2: 使用双指针,初始 cur=pre=head; 然后让pre向右移动 k-1个距离;
    // 最后是同时移动cur和pre指针,当pre到达尾结点的时候,cur指向的就是倒数第k个结点
    public ListNode getKthFromEnd(ListNode head, int k) {
        ListNode cur,pre;
        cur=pre=head;

        while(k-->1){
            pre=pre.next;
        }
        while(pre.next!=null){
            pre=pre.next;
            cur=cur.next;
        }
        return cur;
    }
}